package com.lihaozhe.service;

import org.springframework.security.core.GrantedAuthority;

import java.io.Serializable;
import java.security.Principal;
import java.util.Collection;

/**
 * @author 李昊哲
 * @version 1.0
 * 2021/12/1 下午3:30
 */
public interface Authentication extends Principal, Serializable {
    /**
     * 获取用户的权限
     */
    Collection<? extends GrantedAuthority> getAuthorities();

    /**
     * 获取用户凭证，一般来说就是密码
     */
    Object getCredentials();

    /**
     * 获取用户携带的详细信息，可能是当前请求之类的东西
     */
    Object getDetails();

    /**
     * 获取当前用户，可能是一个用户名，也可能是一个用户对象
     */
    Object getPrincipal();

    /**
     * 当前用户是否认证成功
     */
    boolean isAuthenticated();

    void setAuthenticated(boolean var1) throws IllegalArgumentException;
}